package JDBC.Problems;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *  问题：使用mysql5.7版本后，查询不了中文字符
 */
public class TestDemo {
    public static void main(String[] args) {
        boolean flag = login("周星驰");
        if(flag) {
            System.out.println("查询成功");
        } else {
            System.out.println("未查询到");
        }
    }


    public static boolean login(String username) {
        if(username != null) {

            Connection conn = null;
            PreparedStatement pstmt = null;

            ResultSet resultSet = null;
            try {
                conn = JDBCUtils.getConnection();

                // 使用预编译的SQL语句对象
                // 防止SQL注入问题 -- 静态sql语句可以通过输入 or 关键字破坏语句逻辑
                String sql = "select * from user where name = ?";
                // 获取对象并传递sql语句
                // 使用 ? 作为占位符
                pstmt = conn.prepareStatement(sql);
                // 给 ? 赋值
                // setXXX()方法，参数1是?的位置（从1开始），参数2是?的值
                pstmt.setString(1, username);

                System.out.println(pstmt);

                // 获取结果集
                resultSet = pstmt.executeQuery();
                // 判断只需要判断结果集中是否有值
                return resultSet.next();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                JDBCUtils.close(resultSet, pstmt, conn);
            }

            return false;
        }

        return false;
    }
}
